/**
 * @file Condition.hpp
 *
 *  @date 2009-06-07
 *  @author hauleth
 */

#ifndef CONDITION_HPP_
#define CONDITION_HPP_

#include <Bust/Threads/Mutex.hpp>

namespace bust {

class Condition : public bust::noncopyable {
	public:
		Condition();
		virtual ~Condition();

		int wait( Mutex& mutex );
		int wait( Mutex& mutex, unsigned long int ms );
		int signal();
		int broadcast();
	private:
		Condition( const Condition& ) {
		}
		Condition& operator =( const Condition& ) {
			return *this;
		}
		void* _data;

};

}

#endif /* CONDITION_HPP_ */
